package com.ilop.sthome.mvp.model.common;

import com.example.common.mvp.onModelCallBack;

/**
 * @author skygge
 * @Date on 2020-02-19.
 * GitHub：javofxu@github.com
 * email：skygge@yeah.net
 * description：
 */
public interface ShareModelImpl {

    /**
     * 检测账号是否已注册
     * @param type phone/email
     * @param address 手机号/邮箱地址
     * @param callBack 是否已经注册（true表示已经注册，false表示未注册)
     */
    void registerCheck(String type, String address, onModelCallBack callBack);

    /**
     * 获取共享通知列表
     * @param pageNo
     * @param pageSize
     * @param callBack
     */
    void getShareNoticeList(int pageNo, int pageSize, onModelCallBack callBack);

    /**
     * 根据设备获取绑定关系
     * @param iotId 设备id
     * @param pageNo 当前页号，从1开始的页序号
     * @param pageSize 页大小，单页的item数量上限
     * @param owned 表示设备绑定的类型：0:作为分享设备被他人分享；1:设备拥有者；null:所有
     * @param callBack list
     */
    void getBindingByDevice(String iotId, int pageNo, int pageSize, int owned, onModelCallBack callBack);

    /**
     * 设备分享给指定的用户
     * @param iotId 设备iotId
     * @param accountAttr 唯一标识目标用户的属性（如：手机号、邮箱的值）
     * @param accountAttrType 手机号："MOBILE"，邮箱: "EMAIL"
     * @param callBack
     */
    void shareDevicesAndScenes(String iotId, String accountAttr, String accountAttrType, onModelCallBack callBack);

    /**
     * 发起者取消分享
     * @param recordId 分享记录唯一ID
     * @param callBack
     */
    void cancelShare(String recordId, onModelCallBack callBack);

    /**
     * 被分享者同意或拒绝分享
     * @param recordId 分享记录唯一ID
     * @param agree 0:不同意；1:同意. 必填
     * @param callBack
     */
    void confirmShare(String recordId, int agree, onModelCallBack callBack);

    /**
     * 管理员解绑设备
     * @param targetIdentityId 要解绑的用户identityId（设备的普通成员），非管理员的 identityId
     * @param iotId 要解绑的设备ID
     * @param callBack null
     */
    void unbindByManager(String targetIdentityId, String iotId, onModelCallBack callBack);

    /**
     * 清空共享消息列表
     * @param callBack
     */
    void clearShareNoticeList(onModelCallBack callBack);
}
